package cn.yunhe.dao;

import cn.yunhe.entity.Blank;
import cn.yunhe.entity.Reply;
import cn.yunhe.entity.Topic;

import java.util.List;
import java.util.Map;

public interface ITopicDao{

	/**
	 * 发布帖子方法
	 * @param topic 新建的帖子对象
	 * @return 帖子发布结果  若该值大于0说明删除成功,否则删除失败
	 */
	int PostTopic(Topic topic);


    /**
     * 删除主帖,同时删除主贴关联的回帖
     * @param topic主贴对象
     * @return
     */
    int DeletTopic(Topic topic);


    /**
     * 删除回帖
     * @param reply 需要删除的回帖对象
     * @return
     */
    int DeletReply(Reply reply);



	/**
	 * 查询各板块对应的贴子
	 * @param map
	 * @return
	 */
	List<Topic> SelectAllTopic(Map<String,Object> map);

	/**
	 * 通过关键字搜索帖子方法(模糊查询)
	 * @param keyword 关键字
	 * @return 查询的帖子对象集合
	 */
	List<String> SelectTopicByKeyword(String keyword);

	/**
	 * 通过标题和板块Id精确查询帖子
	 * @param map 板块和标题集合
	 * @return 帖子标题集合
	 */
	 List<String>  AccurateSelectTopicByTitleBId(Map<String,Object> map);

	/**
	 * 通过包含部分信息的帖子对象精确查询贴子
	 * @param map 板块对象和帖子对象集合
	 * @return 帖子标题集合
	 */
	List<Topic> AccurateSelectTopicByTopic(Map<String,Object> map);

	/**
	 * 统计各个板块帖子总条数
	 * @param blank 板块对象
	 * @return 主题条数
	 */
	int count(Blank blank);

	/**
	 * 统计主贴总数目
	 * @return 主贴条数
	 */
	int countBykeyword(String keyword);

	/**
	 * 通过关键字模糊查询相关主帖
	 * @return 查询出来的主贴对象
	 */
	List<Topic> FuzzySelectTopicByKeyword(String keyword);

	/**
	 * 分页查询帖子信息
	 * @param map 查询关键字,总页数,当前页索引集合
	 * @return 主贴集合
	 */
	List<Topic> FuzzySelectTopicByKeywordCurrPage(Map<String,Object> map);

}
